const Base = require('./base/base');

var morsecode={
	'a':'.-',
	'b':'-...',
	'c':'-.-.',
	'd':'-..',
	'e':'.',
	'f':'..-.',
	'g':'--.',
	'h':'....',
	'i':'..',
	'j':'.---',
	'k':'-.-',
	'l':'.-..',
	'm':'--',
	'n':'-.',
	'o':'---',
	'p':'.--.',
	'q':'--.-',
	'r':'.-.',
	's':'...',
	't':'-',
	'u':'..-',
	'v':'...-',
	'w':'.--',
	'x':'-..-',
	'y':'-.--',
	'z':'--..',
	'1':'.----',
	'2':'..---',
	'3':'...--',
	'4':'....-',
	'5':'.....',
	'6':'-....',
	'7':'--...',
	'8':'---..',
	'9':'----.',
	'0':'-----',
	'?':'..--..',
	'/':'-..-.',
	'()':'-.--.-',
	'-':'-....-',
	'.':'.-.-.-'
};

function find(c){
	var k = ' ';
	for(var key in morsecode){
		if (morsecode[key] == c){
			k = key;
			break;
		}
	}
	return k;
}

/**
 * @extends base
 */
module.exports = class extends Base {
	encodeAction(param){
		let result = [];
		for(let c of param.text){
			try {
				result.push(morsecode[c]);
			} catch(err){
				result.push(c);
			}
		}
		return result.join(' ');
	}
	decodeAction(param){
		var s1 = param.text.split(/[ ]+/);
		var r='';
		for(var k in s1){
			r += find(s1[k]);
		}
		return r;
	}
}